home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
vol_400
/
429_01
/
chess12
/
chess.doc
< prev
next >
Wrap
Text File
|
1994-05-03
|
4KB
|
128 lines
MS-DOS CHESS PROGRAM FOR IBM PC COMPATIBLES
Version 1.0
USAGE
CHESS white-player black-player
A player (white or black) is specified as one of "U", "C1", "C2" or
"C3". "U" specifies that the player's moves will be selected by the
user. "C1", "C2" or "C3" specifies that the player's moves will be
selected by the computer. The digit (1, 2 or 3) gives the relative
skill level with which the computer selects the player's moves. For
example, the command:
CHESS C2 U
starts a game with the computer selecting the white player's moves (at
skill level 2) and the user selecting the black player's moves. The
default for black-player is C2, and the default for white-player is U.
It is legal for both players to be user-controlled, or for both
players to be computer-controlled. When playing at skill level 3, the
computer will take several minutes to select each move.
Pieces on the chess board are represented by two letter strings. The
first letter is W (for a white piece) or B (for a black piece). Here
is the legend for the second letter:
P - Pawn
R - Rook
N - Knight
B - Bishop
Q - Queen
K - King
IMPLEMENTATION
The following files contain the source code for the program:
brdsize.hpp
charui.cpp
charui.hpp
chcharui.cpp
chcharui.hpp
chess.cpp
chess.hpp
chessui.cpp
chessui.hpp
cplayer.cpp
cplayer.hpp
main.cpp
misc.hpp
player.hpp
uplayer.cpp
uplayer.hpp
Here are the important class hierarchies:
PIECE
*
*
************************************
* * * * * *
* * * * * *
KING QUEEN BISHOP KNIGHT ROOK PAWN
PLAYER
*
**************
* *
* *
COMPUTERPLAYER USERPLAYER
CHARUSERIFACE
*
*
CHESSCHARUSERIFACE
*
*
CHESSUSERIFACE
This program uses BIOS calls to interface with the screen and
keyboard. It could be ported to another character-oriented API by
changing the implementation of CHARUSERIFACE. It could be ported to a
GUI API by changing the implementation of CHESSUSERIFACE.
ALGORITHM FOR COMPUTER PLAYER
The algorithm for the computer player appears in the play() member
function of COMPUTERPLAYER. The first step is to find the list of
possible moves which are predicted to get the opponent in checkmate,
or provide the most material gain (or minimize material loss). This
prediction is done by looking ahead several moves. The number of
moves of look-ahead is 2 for skill level 1, 3 for skill level 2, and 4
for skill level 3. The look-ahead is performed by the recursive
findBestMove() member function of the BOARD class. To select among
the list of best moves, a "coverage/threat" metric is used. This
metric measures how much of the board will be "attackable" after the
move, giving extra points for blocking moves by the opponent's king.
It also encourages moving pieces closer to the opponent king.
Please send all comments and bug reports to:
Walt Karas
118 Barcelona Ct.
Cary, NC 27513
This program is no Deep Thought, and can easily be beaten by a good
human player.
VERSION INFORMATION
Version 1.0
o Initial release.
Version 1.1
o Removal of obscure bug in Computer Player play() member function.
o Fine tuning of best development metric.
o Removal of useless "usage" printing code.
o Removal of bug with en passant move logic which caused pawns to
"disappear" from internal representation of board, although they
were still on the screen.
Version 1.2
o Small changes, essentially cosmetic in nature.